In the computer arts, generally there is a fundamental distinction between communication software and computing software. Computing applications such as database programs and word processors are used to create a range of data files. Communications software such as web browsers or email programs can be used to make these files available to other computers.
With the increasing use and sophistication of computers, the desirability of integrating communication software with computing software has become apparent. Problems with this integration can arise, however, in that computing environments contain a mix of topologies, such as large clients interacting with relatively smaller servers over fast networks and LANs, or slower clients interacting with larger servers over slower networks and WAN architectures. Fixed-tier architectures are generally unable to accommodate every environment. The number of tiers in an application architecture impacts practical implementation and the ability to deliver performance, scalability, flexibility, and ease of use.